package com.translator.engine;

import com.translator.model.TranslationRequest;
import com.translator.model.TranslationResult;

/**
 * 翻译引擎接口
 * 定义所有翻译引擎必须实现的方法
 */
public interface TranslationEngine {
    
    /**
     * 执行翻译操作
     * 
     * @param request 翻译请求，包含源文本和语言设置
     * @return 翻译结果
     * @throws Exception 如果翻译过程中发生错误
     */
    TranslationResult translate(TranslationRequest request) throws Exception;
    
    /**
     * 获取引擎名称
     * 
     * @return 引擎名称
     */
    String getEngineName();
    
    /**
     * 检查引擎是否需要API密钥
     * 
     * @return 如果需要API密钥返回true，否则返回false
     */
    boolean requiresApiKey();
    
    /**
     * 设置API密钥
     * 
     * @param apiKey API密钥
     */
    void setApiKey(String apiKey);
    
    /**
     * 检查引擎配置是否有效
     * 
     * @return 如果配置有效返回true，否则返回false
     */
    boolean isConfigValid();
}